package own.stu.jobgib.playown.netty.pdf_demo.demo1;

import java.util.concurrent.TimeUnit;

/**
 * (1)虚拟机中可能同时有多个线线程运行，只有当所有的非守护线程(通常都是用户线程)都结束的时候，虚拟机的进程才会结束，
 * 不管当前运行的线程是不是 main 线程。
 * <br/>
 * (2)main 线程运行结束，如果此时运行的其他线程全部是 Daemon 线程，JVM 会使这些线程停止，同时退出。
 * 但是如果果此时正在运行的其他线程有非守护线程，那么必须等所有的非守护线程结束，JVM 才会退出。
 */
public class DaemonT1 {
    public static void main(String[] args)
            throws IllegalArgumentException, InterruptedException {
        long startTime = System.nanoTime();
        Thread t = new Thread(new Runnable() {
            public void run() {
                try {
                    TimeUnit.DAYS.sleep(Long.MAX_VALUE);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }, "Daemon-T");
        // t.setDaemon(true);
        t.start();
        TimeUnit.SECONDS.sleep(5);
        System.out.println("cost ： " + (System.nanoTime() - startTime) / 1000 / 1000 / 1000 + " s");
    }
}